//#include<iostream>
//#include<vector>
//using namespace std;
//
////只有为0的时候才可以放蛋糕
//int main()
//{
//    int result=0,W,H;
//    cin>>W,H;
//    vector<vector<int>>save;
//
//    for(auto&ch : save)
//    {
//        ch.resize(W);
//    }
//    for(int i=0;i<save.size();i++)//x
//    {
//        for(int j=0;j<save[0].size();j++)//y
//        {
//            if(save[i+2][j]==0||save[i][j+2]==0)
//            {
//                save[i][j]=1;
//                result++;
//            }
//        }
//    }
//
//    cout<<result<<endl;
//    return 0;
//}


//#include<iostream>
//#include<string>
//using namespace  std;
//
//
//class Parenthesis {
//public:
//    bool chkParenthesis(string A, int n) {
//        // write code here
//        if(n%2 !=0)
//        {
//            return false;
//        }
//
//        string left;
//        string right;
//
//        int index=0;
//        while(index<n)
//        {
//            if(A[index]!='('&&A[index]!=')')
//            {
//                return false;
//            }
//
//            if(A[index]=='(')
//            {
//                left.push_back('(');
//            }
//            else {
//                if(left.empty())
//                {
//                    right.push_back(')');
//                }
//                else {
//                    left.pop_back();
//                }
//            }
//            index++;
//        }
//
//        while(!left.empty()&&!right.empty())
//        {
//            left.pop_back();
//            right.pop_back();
//        }
//        if(left.empty()&&right.empty())
//        {
//            return true;
//        }
//
//        return false;
//    }
//};
//
//int main()
//{
//    Parenthesis d1;
//    cout<<d1.chkParenthesis(string(")))((("),6);
//}



//#include<iostream>
//using namespace std;
//int main()
//{
//    //F[i]=F[i-1]+F[i-2]//fib数列
//    int number;
//    cin>>number;
//    long long  first=0,second=1,third=1;
//
//    //fib数列求值
//    while(third<number)
//    {
//        third=first+second;
//        first=second;
//        second=third;
//    }
//
//    //判断谁与数据更进
//    int min=number-first;
//    int max=third-number;
//    int ret=min<max?min:max;
//    //结果
//    cout<<ret<<endl;
//
//    return 0;
//}

//#include<iostream>
//#include<string>
//#include<vector>
//using namespace std;
//
//class Solution {
//public:
//    string sortSentence(string s) {
//        vector<string>save;
//        int cur=0;
//        string tmp;
//
//        while(cur<=s.size())//将字符串入数组
//        {
//            if(s[cur]==' '||cur==s.size())
//            {
//                save.push_back(tmp);
//                tmp.clear();
//                cur++;
//            }
//            else{
//                tmp.push_back(s[cur++]);
//            }
//        }
//
//        int index=0;
//        while(index<save.size())//调整字符所在的位置
//        {
//            int number=save[index].back()-48;
//            if(number-1==index)
//            {
//                index++;
//            }
//            else {
//                swap(save[index],save[number-1]);
//            }
//        }
//
//        tmp.clear();
//        index=0;
//        while(index<save.size())
//        {
//           tmp+=save[index++];
//           tmp.back()=' ';
//        }
//        tmp.pop_back();
//        return tmp;
//    }
//};
//
//int main()
//{
//    Solution d1;
//   cout<< d1.sortSentence(string("is2 sentence4 This1 a3"))<<endl;
//}




//#include<iostream>
//using namespace std;
//
//int main()
//{
//    int number1,number2;
//    cin>>number1>>number2;
//    int min=number1>number2?number1:number2;
//
//    for(int i =min; i<=number1*number2; i++)//最小公倍数应该是俩中最大的那个
//    {
//        if(i%number1==0 && i%number2==0)
//        {
//            cout<<i<<endl;
//            break;
//        }
//    }
//}


//#include<iostream>
//#include<set>
//#include<string>
//using namespace std;
//
//int main()
//{
//    int number,sum=0;
//    cin>>number;
//    set<string>result;
//    string tmp;
//
//    for(int i =0;i<number;i++)
//    {
//        cin>>tmp;
//        sum+=tmp.size();
//        result.insert(tmp);
//    }
//
//    if(tmp.size()!=1 && sum/number!=number)
//    {
//        cout<<"both"<<endl;
//    }
//    else if(tmp.size()==number&& sum/number==number)
//    {
//        cout<<"lengths"<<endl;
//    }
//    else {
//        cout<<"none"<<endl;
//    }
//    return 0;
//}


//#include<iostream>
//#include<set>
//#include<string>
//using namespace std;
//
//int main()
//{
//    int number,sum=0,decide=1;
//    cin>>number;
//    set<string>result;
//    string tmp;
//
//    for(int i =0;i<number;i++)
//    {
//        cin>>tmp;
//        if(sum==0)
//        {
//            sum=tmp.size();
//        }
//        if(tmp.size()!=sum)//判断字符串是否重复
//        {
//            decide=0;
//        }
//        result.insert(tmp);
//    }
//
//    if(tmp.size()!=1 && decide !=1)
//    {
//        cout<<"both"<<endl;
//    }
//    else if(tmp.size()!=1 && decide==1)
//    {
//        cout<<"lexicographically"<<endl;
//    }
//    else if(tmp.size()==1 && decide==0)
//    {
//        cout<<"lengths"<<endl;
//    }
//    else {
//        cout<<"none"<<endl;
//    }
//    return 0;
//}

//#include<iostream>
//#include<vector>
// #include<string>
// using namespace std;
//
// int main()
// {
//     int number,sum=0,decide=1;
//     cin>>number;
//     vector<string>result;
//     string tmp;
//
//     for(int i =0;i<number;i++)
//     {
//         cin>>tmp;
//         if(sum==0)
//         {
//             sum=tmp.size();
//         }
//         if(tmp.size()!=sum)//判断字符串是否重复
//         {
//             decide=0;
//         }
//         result.push_back(tmp);
//     }
//
//     if(tmp.size()!=1 && decide !=1)
//     {
//         cout<<"both"<<endl;
//     }
//     else if(tmp.size()!=1 && decide==1)
//     {
//         cout<<"lexicographically"<<endl;
//     }
//     else if(tmp.size()==1 && decide==0)
//     {
//         cout<<"lengths"<<endl;
//     }
//     else {
//         cout<<"none"<<endl;
//     }
//     return 0;
// }



//#include<iostream>
//using namespace std;
//class UnusualAdd {
//public:
//    int addAB(int A, int B) {
//       int ret=A&B;
//       if(ret==0)//位数中没有相同的元素的时候
//       {
//           ret=A|B;
//       }
//       else {
//           int save=A^B;//相同为0，相异为1
//           ret<<=1;//进位
//           ret |=save;
//       }
//       return ret;
//    }
//};
//
//int main()
//{
//    UnusualAdd d1;
//    cout<<d1.addAB(3,2)<<endl;
//}

//
//#include<iostream>
//#include<vector>
//using namespace  std;
//
//
//class Board {
//public:
//    bool checkWon(vector<vector<int> > board) {
//        // write code here
//
//        //每一行与列是否相等
//        int DecideRow=0,DecideLine=0,indexI=0,indexJ=0;
//        for(int i =0;i<board.size();i++)
//        {
//            for(int j =0;j<board[0].size()-1;j++)
//            {
//                //行判断
//                if(board[i][j]==1)//如果都不为1，那么就是敌方棋
//                {
//                    if(indexJ==1||board[i][j]!=board[i][j+1])
//                    {
//                        DecideRow=0;
//                    }
//                    else{
//                        DecideRow=1;
//                    }
//
//                    //列判断
//                    if(i==0 && DecideLine==0)
//                    {
//                        while(indexI<board.size()-1)
//                        {
//                            if( board[indexI][j] !=board[indexI+1][j])
//                            {
//                                DecideLine=0;
//                                break;
//                            }
//                            else {
//                                DecideLine =1;
//                            }
//                            indexI++;
//                        }
//                    }
//
//                    if(DecideRow==0||DecideLine==1)
//                    {
//                        break;
//                    }
//                    indexI=0;
//                }
//                else {
//                    indexJ=1;
//                }
//            }
//            indexJ=0;
//            if(DecideRow==1||DecideLine==1)//行列其中一个相等
//            {
//                return true;
//            }
//
//        }
//
//
//        //斜角左
//        DecideRow=0,DecideLine=0,indexI=0;
//        while(DecideRow<board.size()-1 &&DecideLine<board[0].size()-1)
//        {
//          if(board[DecideRow][DecideLine]!=board[++DecideRow][++DecideLine])
//          {
//              indexI=0;
//              break;
//          }
//          else {
//              indexI=1;
//          }
//        }
//        //斜角右
//        DecideRow=0,DecideLine=board[0].size()-1,indexJ=0;
//        while(DecideRow<board.size()-1 && DecideLine>0)
//        {
//            if(board[DecideRow][DecideLine]!=board[++DecideRow][--DecideLine])
//            {
//                indexJ=0;
//                break;
//            }
//            else {
//                indexJ=1;
//            }
//        }
//        if(indexI==1 || indexJ==1)
//        {
//            return true;
//        }
//
//        return false;
//    }
//};
//
//
//int main()
//{
//    Board d1;
//    vector<vector<int>>d2;
//    //或许中间为相等但是行不相等
//    d2.push_back( vector<int> { 1,  1, 1});
//    d2.push_back( vector<int> {1,   -1,-1});
//    d2.push_back( vector<int> {-1,  1, 1});
//    cout<<d1.checkWon(d2);
//}



//#include<iostream>
//#include<string>
//
//using namespace std;
//int main()
//{
//    //接收数据
//    string save;
//    cin>>save;
//
//    //判断长度
//    int length_score,char_score,number_score,sign_score,prize_score,size=save.size();
//
//    //统计
//    int index=0,number_count=0,sign_count=0,char_count_big=0,char_count_small=0;
//    while(index<size)
//    {
//        if(save[index]>=48&&save[index]<=57)//数字
//        {
//            number_count++;
//        }
//        else if(save[index]>=65&&save[index]<=90 ||save[index]>=97&&save[index]<=122)//字符
//        {
//            if(save[index]>=65&&save[index]<=90)//大写
//            {
//                char_count_big++;
//            }
//            else //小写
//            {
//                char_count_small++;
//            }
//        }
//        else //符号
//        {
//            sign_count++;
//        }
//        index++;
//    }
//
//    //长度
//    if(size<=4)
//    {
//        length_score=5;
//    }
//    else if(size>=5&&size<=7)
//    {
//        length_score=10;
//    }
//    else {
//        length_score=25;
//    }
//
//    //字母
//    int char_count=char_count_big+char_count_small;
//    if(char_count>0)
//    {
//        if(char_count_big>0&&char_count_small>0)
//        {
//            char_score=20;
//        }
//        else
//        {
//            char_score=10;
//        }
//    }
//    else
//    {
//        char_score=0;
//    }
//    //数字
//    if(number_count>0)
//    {
//        if(number_count==1)
//        {
//            number_score=10;
//        }
//        else {
//            number_score=20;
//        }
//
//    }
//    else {
//        number_score=0;
//    }
//
//    //判断符号
//    if(sign_count>0)
//    {
//        if(sign_count==1)
//        {
//            sign_score = 10;
//        }
//        else
//        {
//            sign_score =25;
//        }
//    }
//    else
//    {
//        sign_score=0;
//    }
//
//    //奖励
//    if(char_count>0 && number_count>0 && sign_count>0 )
//    {
//        if(char_count_big>0&&char_count_small>0)
//        {
//            prize_score=5;
//        }
//        else {
//            prize_score=3;
//        }
//    }
//    else if(char_count>0 && number_count>0)
//    {
//        prize_score=2;
//    }
//
//    //评分标准
//    int score = length_score+number_score+sign_score+char_score+prize_score;
//    if(score>=90)
//    {
//        cout<<"VERY_SECURE"<<endl;
//    }
//    else if(score>=80)
//    {
//        cout<<"VERY_SECURE"<<endl;
//    }
//    else if(score>=70)
//    {
//        cout<<"VERY_STRONG"<<endl;
//    }
//    else if(score>=60)
//    {
//        cout<<"STRONG"<<endl;
//    }
//    else if(score>=50)
//    {
//        cout<<"AVERAGE"<<endl;
//    }
//    else if(score>=25)
//    {
//        cout<<"VERY_WEAK"<<endl;
//    }
//    else
//    {
//        cout<<"VERY_WEAK"<<endl;
//    }
//    return 0;
//}


//#include<iostream>
//#include<vector>
//using namespace  std;
//
//
//class Board {
//public:
//    bool checkWon(vector<vector<int> > board) {
//        // write code here
//        int decide=0;
//        for(int i =0;i<board.size();i++)
//        {
//            if(board[i][0]==1 &&board[i][0]==board[i][1] &&board[i][1]==board[i][2])
//            {
//                decide=1;
//                break;
//            }
//        }
//        if(decide==1)
//        {
//            return true;
//        }
//
//        if(board[0][0]==1 &&board[0][1]==board[1][1] &&board[1][1]==board[2][1])
//        {
//            return true;
//        }
//
//        if(board[0][0]==1 &&board[0][0]==board[1][1] &&board[1][1]==board[2][2])
//        {
//            return true;
//        }
//        if(board[0][2]==1 &&board[0][2]==board[1][1] &&board[1][1]==board[2][0])
//        {
//            return true;
//        }
//        return false;
//    }
//};
//
//
//int main()
//{
//    Board d1;
//    vector<vector<int>>d2;
//    //或许中间为相等但是行不相等
//    d2.push_back( vector<int> {1,  1, 1});
//    d2.push_back( vector<int> {1,  -1, 1});
//    d2.push_back( vector<int> {-1,  1, 1});
//    cout<<d1.checkWon(d2);
//}

//#include<vector>
//#include<iostream>
//#include<set>
//using namespace std;
//class LCA {
//public:
//    int getLCA(int a, int b) {
//        // write code here
//        //满二叉树的求父亲的节点的 ：当前节点-1/2
//        //用一个数组存二叉树的节点
//        //容器选择：set+vector
//        int max=a>b?a:b;
//        int min=a<b?a:b;
//        vector<int>save;
//        set<int>result;
//
//        save.resize(max);
//        int index=1;
//        for(auto &ch : save)
//        {
//            ch=index++;
//        }
//
//        int parent1=min-1,parent2=max-1;
//
//        while(parent1>=0 || parent2>=0)
//        {
//            if(parent1>0)
//            {
//                parent1=(parent1-1)/2;//小的节点r
//            }
//
//            parent2=(parent2-1)/2;//大的节点
//
//            if(save[parent2]==min)//单枝
//            {
//                return save[parent1];
//            }
//
//            //双枝
//            if(parent1>0)
//            {
//                result.insert(save[parent1]);
//            }
//            auto ret =result.insert(save[parent2]);
//            if(ret.second == false )
//            {
//                return save[parent2];
//            }
//
//        }
//        return 0;
//    }
//};
//
//int main()
//{
//    LCA d1;
//    cout<<d1.getLCA(24,7)<<endl;
//    return 0;
//}


//素数的概念：只能被一或本身整除(2的倍数排除)
//1.存储数据(素数)
//2.判断区间(范围[0,当前数])

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>save1;
    vector<int>save2;
    int number,decide=0,div=INT_MAX,prime1,prime2;

    cin>>number;
    save2.resize(number);

    //入素数
    for(int i =2;i<number;i++)
    {
        for(int j=2;j<i;j++)
        {
            if(i%j==0)
            {
                decide=1;
                break;
            }
        }
        if(decide!=1)
        {
            save1.push_back(i);
            save2[i]=1;
        }
        decide=0;
    }

    //判断区间值
    int index=0;
    while(index<=(save1.size()/2))
    {
        int differ=number-save1[index];//另一个素数

        if(differ==save1[index])//差值相同的情况 4==2+2 6=3+3
        {
            prime1=prime2=save1[index];
            break;
        }

        if(save2[differ])//存在
        {
            int differ2=differ-save1[index];//差值

            if(differ2<=div)//更新素数
            {
                div=differ2;
                prime1=save1[index];
                prime2=differ;
            }
        }
        index++;
    }

    cout<<prime1<<endl<<prime2<<endl;

    return 0;
}

